'''
编写一个函数来查找给定字符串的最大
公共子串
'''
def find_long_substr(str1,st2):
    # 获取两个字符串的长度
    m,n = len(str1),len(st2)
    # 创建一个二维数组来保存最长公共子串的长度
    dp = [[0]*(n+1) for _ in range(m+1)]
    #初始化最大长度和对应的结束索引（注意这里的结束索引是子串在s1中的结束位置）
    max_length = 0
    end_index = 0

    #填充dp数组
    for i in range(1,m+1):
        for j in range(1,n+1):
            if str1[i-1] == st2[j-1]: #当前字符匹配
                dp[i][j] = dp[i-1][j-1] + 1
                # 更新最大长度和结束索引
                if dp[i][j] > max_length:
                    max_length = dp[i][j]
                    end_index = i
            else:
                dp[i][j] = 0
    if max_length >0:
        print("最大公共子串长度为：",max_length)
        print("最大公共子串为：",s1[end_index-max_length:end_index])
        return '成功'
    else:
        print("没有找到公共子串！")
        return '失败'

#示例
s1 = "abcde"
s2 = "abdef"
print(find_long_substr(s1,s2))